/*
 * @Description: enter your description
 * @Autor: bxs
 * @Date: 2021-12-15 15:38:56
 * @LastEditors: bxs
 * @LastEditTime: 2021-12-16 14:26:59
 */
import { currying } from "../基础工具类/basicTools.js"
/**
 * 数组去重 任意类型
 * @param {Array} array 
 * @returns 
 */
const uniqueArray = (array) => {
    let obj = {}
    return array.filter(item => {
      // 防止key重复
      let newItem = item + JSON.stringify(item)
      return obj.hasOwnProperty(newItem) ? false : obj[newItem] = true
    })
}
/**
 * 数组去空,不包括filterArr的数据
 * @param {Array} filterArr 排除去空的情况
 * @param {*} arr 操作数组
 * @returns 
 */
function filterArr(filterArr, arr) {
    return excludefiltersArr(filterArr,arr)
}
/**
 * 根据传入数组进行条件过滤
 * @param {*} param  'exclude'排除filter数组内的元素 'include'包含
 * @param {*} filterArr 过滤条件
 * @param {*} arr 数组
 * @returns 
 */
function conditionFilter(param = 'exclude', filterArr = [], arr = []) {
    if (param === 'exclude') {
        return arr.filter(i=>!filterArr.includes(i))
    } else if (param === 'include') {
        return arr.filter(i=>filterArr.includes(i))
    } 
}
// 排除方法
const excludefiltersArr = currying(conditionFilter, 'exclude')
// 包含方法
const includefiltersArr = currying(conditionFilter, 'include')
// 排除0,""的情况
const filtersArr = currying(filterArr, [0,'',null,undefined])

export default { uniqueArray }